{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Nonlinear SVM Example\n",
    "\n",
    "This function wll illustrate how to implement the gaussian kernel on the iris dataset.\n",
    "\n",
    "Gaussian Kernel:\n",
    "\n",
    "$$K(x_{1}, x_{2}) = e^{\\left(-\\gamma \\cdot (x_{1} - x_{2})^{2}\\right)}$$\n",
    "\n",
    "We start by loading the necessary libraries and resetting the computational graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/site-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from sklearn import datasets\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a graph session"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load the Iris Data\n",
    "\n",
    "Our x values will be $(x_1, x_2)$ where,\n",
    "\n",
    "$x_1 =$ 'Sepal Length'\n",
    "\n",
    "$x_2 =$ 'Petal Width'\n",
    "\n",
    "The Target values will be wether or not the flower species is Iris Setosa."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the data\n",
    "# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]\n",
    "iris = datasets.load_iris()\n",
    "x_vals = np.array([[x[0], x[3]] for x in iris.data])\n",
    "y_vals = np.array([1 if y==0 else -1 for y in iris.target])\n",
    "class1_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class1_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class2_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==-1]\n",
    "class2_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model Parameters\n",
    "\n",
    "We now declare our batch size, placeholders, and the fitted b-value for the SVM kernel.  Note that we will create a separate placeholder to feed in the prediction grid for plotting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare batch size\n",
    "batch_size = 150\n",
    "\n",
    "# Initialize placeholders\n",
    "x_data = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)\n",
    "prediction_grid = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "\n",
    "# Create variables for svm\n",
    "b = tf.Variable(tf.random_normal(shape=[1,batch_size]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gaussian (RBF) Kernel\n",
    "\n",
    "We create the gaussian kernel that is used to transform the data points into a higher dimensional space.\n",
    "\n",
    "The Kernel of two points, $x$ and $x'$ is given as\n",
    "\n",
    "$$K(x, x')=exp\\left(-\\gamma|| x-x' ||^{2}\\right)$$\n",
    "\n",
    "For $\\gamma$ very small, the kernel is very wide, and vice-versa for large $\\gamma$ values.  This means that large $\\gamma$ leads to high bias and low variance models.\n",
    "\n",
    "If we have a vector of points, $x$ of size (batch_size, 2), then our kernel calculation becomes\n",
    "\n",
    "$$K(\\textbf{x})=exp\\left( -\\gamma \\textbf{x} \\cdot \\textbf{x}^{T} \\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Gaussian (RBF) kernel\n",
    "gamma = tf.constant(-50.0)\n",
    "sq_vec = tf.multiply(2., tf.matmul(x_data, tf.transpose(x_data)))\n",
    "my_kernel = tf.exp(tf.multiply(gamma, tf.abs(sq_vec)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compute SVM Model\n",
    "\n",
    "Here, the SVM loss is given by two terms, The first term is the sum of the $b$ matrix, and the second term is \n",
    "\n",
    "$$\\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)$$\n",
    "\n",
    "We finally tell TensorFlow to maximize the loss by minimizing the negative:  (The following is a horribly abbreviated version of the dual problem)\n",
    "\n",
    "$$-\\left(\\sum\\textbf{b} - \\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)\\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute SVM Model\n",
    "first_term = tf.reduce_sum(b)\n",
    "b_vec_cross = tf.matmul(tf.transpose(b), b)\n",
    "y_target_cross = tf.matmul(y_target, tf.transpose(y_target))\n",
    "second_term = tf.reduce_sum(tf.multiply(my_kernel, tf.multiply(b_vec_cross, y_target_cross)))\n",
    "loss = tf.negative(tf.subtract(first_term, second_term))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define the Prediction Kernel\n",
    "\n",
    "Now we do the exact same thing as above for the prediction points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Gaussian (RBF) prediction kernel\n",
    "rA = tf.reshape(tf.reduce_sum(tf.square(x_data), 1),[-1,1])\n",
    "rB = tf.reshape(tf.reduce_sum(tf.square(prediction_grid), 1),[-1,1])\n",
    "pred_sq_dist = tf.add(tf.subtract(rA, tf.multiply(2., tf.matmul(x_data, tf.transpose(prediction_grid)))), tf.transpose(rB))\n",
    "pred_kernel = tf.exp(tf.multiply(gamma, tf.abs(pred_sq_dist)))\n",
    "\n",
    "prediction_output = tf.matmul(tf.multiply(tf.transpose(y_target),b), pred_kernel)\n",
    "prediction = tf.sign(prediction_output-tf.reduce_mean(prediction_output))\n",
    "accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.squeeze(prediction), tf.squeeze(y_target)), tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Optimizing Method\n",
    "\n",
    "We declare our gradient descent optimizer and intialize our model variables (`b`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare optimizer\n",
    "my_opt = tf.train.GradientDescentOptimizer(0.01)\n",
    "train_step = my_opt.minimize(loss)\n",
    "\n",
    "# Initialize variables\n",
    "init = tf.global_variables_initializer()\n",
    "sess.run(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Run the Classification!\n",
    "\n",
    "We iterate through the training for 300 iterations. We will output the loss every 75 iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Step #75\n",
      "Loss = -101.04286\n",
      "Step #150\n",
      "Loss = -213.54277\n",
      "Step #225\n",
      "Loss = -326.0427\n",
      "Step #300\n",
      "Loss = -438.5429\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_vec = []\n",
    "batch_accuracy = []\n",
    "for i in range(300):\n",
    "    rand_index = np.random.choice(len(x_vals), size=batch_size)\n",
    "    rand_x = x_vals[rand_index]\n",
    "    rand_y = np.transpose([y_vals[rand_index]])\n",
    "    sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    \n",
    "    temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    loss_vec.append(temp_loss)\n",
    "    \n",
    "    acc_temp = sess.run(accuracy, feed_dict={x_data: rand_x,\n",
    "                                             y_target: rand_y,\n",
    "                                             prediction_grid:rand_x})\n",
    "    batch_accuracy.append(acc_temp)\n",
    "    \n",
    "    if (i+1)%75==0:\n",
    "        print('Step #' + str(i+1))\n",
    "        print('Loss = ' + str(temp_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plotting Results\n",
    "\n",
    "We now create a fine mesh for plotting the SVM class lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create a mesh to plot points in\n",
    "x_min, x_max = x_vals[:, 0].min() - 1, x_vals[:, 0].max() + 1\n",
    "y_min, y_max = x_vals[:, 1].min() - 1, x_vals[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),\n",
    "                     np.arange(y_min, y_max, 0.02))\n",
    "grid_points = np.c_[xx.ravel(), yy.ravel()]\n",
    "[grid_predictions] = sess.run(prediction, feed_dict={x_data: x_vals,\n",
    "                                                   y_target: np.transpose([y_vals]),\n",
    "                                                   prediction_grid: grid_points})\n",
    "grid_predictions = grid_predictions.reshape(xx.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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06aFvb/8/Hxefvllpk6dyosvvsj06dN5/vnnmT17NlVVVTz11FNcfPHFxMXFsWDBAmbPns1TTz3FRRddRFxcHPPnz2fGjBnePYby/PPPc9JJJ3n3+sILLzBixAiGDRvGiy++yNq1a72y5557LmVlZaSkpFBeXs7rr7/O6aefzsknnxz23P/973/54osvGDJkCLm5uQwfPpyFCxcydOhQZs2a5ZUrKCjg0UcfJTs7mwsvvJDFixczd+5c4uPjKSsr47e//S3JyclcffXV3v2KCA8++CAlJSXeeRITE/n+97/P8uXLmTx5MsuWLeOLL75oVC8RYdasWQwbNgyApUuX8s477zBt2jR27tzJG2+8weTJk/n617/OqlWr+Mc//gHAySefzOmnn87777/P888/H3TOMWPGMGrUKBYuXMgRRxzBhAkTWLBgAfX19Rx++OFMnTqVl156iUsuuYTi4mL+8Ic/UF1dTWZmJtdeey3x8fHU1dWxYMECZs2axe9+9zvvWV9zzTU8//zzTJ8+nRdeeIGzzz6bbt26hX3mrYqqxuwFDAQ+irDvJeBk3+d/AWMjlL0cWAesO/zww9U4dJkzZ45mZGRofX19k+UeeughBTQ/P1/nzZungD733HO6ePFiBXTdunVhj3v88ccV0GeffdbbtmzZMiWwspneeeedqqr69ttvK6CnnHKKJiYm6lVXXaVVVVWampqqgE6ePDnovKNHj9aJEyfqCSecoICOHDkyaP+kSZM0JydHVVVnzZqlgHbt2jXi/c2YMcOrE6D33XefApqbm6tPPfWUAnrdddfp/PnzFdDBgwcroPfee6/ef//9Cuhdd90V9twVFRXeMaqqJSUlGh8fr+PGjdP6+nrt1auXAioiCuhZZ53l1SMzM1MBnTBhQsS6Z2dnK6DnnHOOJiQk6HnnnecdX1tb65Vz9wToBRdcoIAuXLhQVVV/+tOfevsuvfRS73/zyiuveNtFxKvjlClTFNDp06c32u8vN2PGDFVV3bx5syYmJnrHDhs2TAE97LDDdM+ePTp8+HDvPF27dtXCwkKdOXNmo+t2795db7jhBq+s/zhAL7zwQgV0yZIl+uijjwbt++c//xn0nfQ/Z0BvvPFGBfSWW25RQB999NGIzzwagHUahd3uEIlmVX1MVceq6tiePZsdpW20I/7973/z7rvvRl3+888/p7S0lKKioqDtW7Zs4cknn/Q+u5ZiaWmp1xr+xz/+QX5+YKnl4uLiRueurq7mjjvuAKCiogKA+vp6brnlFgYPHkxycjI7duwA4NZbbwVgzZo11NbWkpeXx+rVq6msrKR///6sWrWKmpqaoPrl5eWxdetWAD755BNqa2u96/7nP/+hoKCAgoICPvzwQwAqKytRVb766isWL17snevDDz/kr3/11gwC8J5HYWGh5wE98MADXh0+/zywJHN5eTkPPPAAgFcXPwsXLuSTTz4JOmblypXs3buXNWvWsGzZMgoKCrj11lupr6/n3HPPZdOmTd7xxcXF9OnTx3t+4XB1Xbp0KXV1dUGt69LSUu99Xt6+dYSeeeYZAG6//Xa2b9/Ogw8+yNFHHw3A9u2B4MEHH3zAihUrSExMZM+ePdTX11NfX8+oUaNYtmyZ96wBHnnkEW+/e82aNYvXXnuNRYsWMWfOHESEMWPG8Pnnn7N582ZOPPFE8vPz+fnPf05ubi533303H3/8MXv27OHee++lrKyM448/3jvfzTffTElJCSUlJaSnp5OdnU1ubi733HMPGzYEFghctGgRALfccguff/45SUlJlJSUkJCQwGuvvQbgGr783//9HwC5ubkAvPrqq0DACwXYtWtXxGfemrSlKGwlsMC4o1/DNuMQ4pprrvEMbDRs3rwZoJH7//jjj3PxxRd7P6Ty8nLvrxOFlStXUlBQAEBZWeNZoZ944gm2bNkC7DMef/vb33j//fe57bbb6Nu3LwUFBdTV1Xmhgz179gCwbds2VqxYQVxcHLfffjt79uzxQizV1dUUFRWRl5fH9u3bOfzww6mtreWzzz4D4O2336aqqgqA9evXe0Z579691NTUMGLECKZPn+4Zh+XLl3shLYe7n6KiIiorK73tfsMKsGPHDr766isAPv7446B9GzZsYM6cOcycOTNo+4oVK0hOTqZ79+788Y9/RFXJyckBYNCgQV59AS6//HJOOOEE7/mFY/DgwDLU7n5UlfHjA6uB7t692yu3bds2hg4dyrBhw7xrbty4kccee4yKigpPwJ0obN++nRUrVnDiiSfSpYu3pDUTJ0703qempgKQlpbWqF4TJ06koKCACy+8kLfeeosbb7yRCRMmkJubS01NDRdffDGnnXYa9913n1d++PDhTJ48mZdffpmKioqg66anp1NfX09BQQF9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iAhZWVneNUJFYfPmzV6MODk5OchT8ItCXV2dlyNITU3lpZde4oYbbgACrUnXI2bChAleeMGPiNCrVy+6detGSUlJkChce+217Ny5k7/97W+e0fKLgnteBQUFUXsKoeEj90yPOOIIAC9JfMQRR7B69WqmT5/ulb333nu9e0lMTPQMdFxcnPcs09LSyMnJCWq5upxCRUUFxcXF3rUKCwsjikKop+AaAn4hcqJQUVHhGVxXj1GjRvH+++97/8NwpKWleeHHaEUhIyODrKyssC1z/3khkIsJ5ymEvg+Ha0z4rzNx4kTWr18f1NAK9RSGDx/u7TNPwWhXROMpOGMKAWPn/xL7399+++387Gc/8wzYnj172LNnD++99x5HHnkkv/nNb/j2t7/Nww8/TF5eHtdffz2lpaXk5OR4LU4XJnGikJiYGPSDCxUF/4/WiYILo7j4sjNkLlntWsbOWA4aNMgzEOnp6Xzve9/j29/+tnfejIwMcnJySExMDCsKftx5/D2EwnkK0YpCjx49gkSqR48eZGRkeEla1+J2RrZLly5cccUVnH766cydOxfYZ6B79uzpxcABZs2axXnnned9TklJ8brpwr7QVFOikJaWFlZE/aKQlpbm5TucQLh6h4aRwuEXgmhFAQKxf//9RTpvbW1tRFFwIhaJKVOmcPLJJ3seA+zz5lwX5TFjxjBhwgQAjj/+eE488URmz57tlTdPwWhXOFEoKCgIG66BYMH417/+FfQl9r8vKipi586dlJaWei3/rVu3smrVKk455RRmz57Niy++yGWXXcbChQu943JycrwWZ319PbBPFJKSkiKKgogEGQkX/igoKCAjI4OUlBTv/NBYFHr16kVcXJzX2nM8+uijQeML+vbt6wlIt27dKC0tpbS0NKzBcPXxdyl1orBz585GotBc76N169Z5rcr4+HiSk5PJycnx4tXuuTnj2r17d5KSkli+fDnnn3++V3//c3Dcf//9nrfknh/sC/f5k7yRREFEvDpceeWVQc/MERcX5z2rgykKDz74INdee22Lz9sST2Hs2LGsXLky6Hj3P3aNo3feecfLa2RmZvLmm29y2mmnedctLi72PKFY0uGW4zTaBteNUVXJz8/3koJ+XGgpOzubJ554Iigu6vcUioqK2LFjB/X19QwdOpTt27fz4osvUllZ2ai7od8Q+z0FR3l5OfX1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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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VYqIxI14K5BywMZ0978IxrJV6dKlmTBhAm+++Sa//PIL9erV47bbbuOnn37K7lWLiORY8VYgh2RmXc0s2cySt2zZclSfu2nTpqSmpnLTTTfx+OOPU7lyZWbPnn1U1yEiEi/irUA2ARXS3S8fjP3O3ce4e5K7J5Upc8jL2R+2448/npEjRzJv3jwKFSpE48aNue6669i2bdtRX5eISE4WbwWyDDjbzM4ws0JAO2B6GEHq16/P6tWr6dOnD8899xyRSIRp06aFEUVEJBRxVSDuvhvoDswC1gKT3T0trDxFihRh0KBBLF26lLJly9KyZUvatGnDV199FVYkEZFjJq4KBMDdZ7r7Oe7+V3d/MOw8ADVq1GDp0qUMGjSIGTNmEIlEmDBhAu4edjQRkWwTdwWSUxUsWJA+ffqwatUqKlWqROfOnbn00kv57LNM/WVIEZG4owI5ys4991zmz5/PiBEjWLBgAQkJCYwcOZK9e/eGHU1E5KhSgWSDfPny0b17d9LS0qhXrx633HILF154IevWrQs7mojIUaMCyUYVK1bkzTffZPz48USjUapWrcpDDz3Eb7/9FnY0EZEjpgLJZmZGp06diEajXHnlldx9993Url2blStXhh1NROSIqECOkbJlyzJlyhSmTp3K5s2bqVWrFn369GHHjh1hRxMRyRIVyDHWsmVL1q5dS8eOHRk8eDBVq1ZlwYIFYccSETlsKpAQlCpVimeeeYZZs2axc+dO6tevT/fu3dm+fXvY0UREMk0FEqLGjRuTmprKrbfeyhNPPEFiYiKzZs0KO5aISKaoQEJWvHhxHnvsMRYsWEDRokVp2rQpnTp1YuvWrWFHExE5KBVIDnH++eezcuVK+vbtywsvvEAkEuHll1/W5VBEJMdSgeQgRYoUYeDAgSxbtozy5cvTpk0bWrVqxebNm8OOJiLyJyqQHKhatWosWbKEwYMHM3PmTCKRCM8++6yORkQkR1GB5FAFChSgV69epKSkULlyZa677joaN27MJ598EnY0ERFABZLjnXPOOfz3v//liSeeYPHixSQmJvL444+zZ8+esKOJSB6nAokD+fLlo1u3bqSlpdGgQQNuu+026tevTzQaDTuaiORhKpA48pe//IU33niD559/nnXr1lG9enUGDhyoizOKSChUIHHGzLjmmmtYu3YtLVq0oF+/fiQlJbF8+fKwo4lIHqMCiVMnn3wykyZNYtq0aWzZsoXatWvTq1cvfv3117CjiUgeoQKJcy1atCAajXLdddcxZMgQqlatyrx588KOJSJ5gAokFyhZsiRjx47lnXfeYffu3TRo0ICbbrqJH3/8MexoIpKLqUBykUsuuYQ1a9Zwxx13MHr0aBISEpg5c2bYsUQkl1KB5DLFihVj2LBhLFq0iBIlSnD55ZdzzTXX8O2334YdTURyGRVILnXeeeexYsUK7r33XiZNmkQkEmHSpEm6HIqIHDUqkFyscOHC3H///SxfvpyKFSvSrl07WrRowZdffhl2NBHJBVQgeUCVKlV4//33eeSRR3j77beJRCI8/fTTOhoRkSOiAskjChQowJ133smaNWuoVq0aN9xwA40aNeKjjz4KO5qIxCkVSB5z1lln8e677/LUU0+xbNkyKleuzLBhw3RxRhE5bCqQPChfvnx07dqVaDRKw4YNufPOOzn//PNJTU0NO5qIxBEVSB5Wvnx5ZsyYwQsvvMDHH39MjRo1uP/++9m1a1fY0UQkDqhA8jgzo3379kSjUdq0aUP//v2pWbMmy5YtCzuaiORwKhABoEyZMkycOJHp06ezbds2zjvvPO666y5++eWXsKOJSA6lApH/ceWVV5KWlsYNN9zA0KFDqVKlCnPnzg07lojkQCoQ+ZMTTjiB0aNH8+677wLQsGFD/vWvf/HDDz+EnExEchIViGTo4osvJiUlhbvuuounn36aSCTCjBkzwo4lIjmECkQOqmjRojz88MMsXryY0qVL06xZM66++mq2bNkSdjQRCVkoBWJmbcwszcz2mlnSfvP6mNkGM1tnZk3SjTcNxjaYWe9jnzpvq1WrFsnJydx///28/PLLVKpUiRdeeEGXQxHJw8I6AkkFWgL/86fzzCwCtAMSgKbAE2aW38zyA6OAS4EI0D5YVo6hQoUKce+997Jy5UrOOussOnToQLNmzfjiiy/CjiYiIQilQNx9rbuvO8Cs5sBL7r7T3T8BNgC1g2mDu3/s7ruAl4JlJQQJCQksXLiQYcOGMWfOHCKRCE899RR79+4NO5qIHEM57TWQcsDGdPe/CMYyGv8TM+tqZslmlqzz9Nknf/783HHHHaSmplKrVi1uvPFGGjZsyPr168OOJiLHSLYViJm9Y2apB5iy9cjB3ce4e5K7J5UpUyY7VyXAmWeeyTvvvMPYsWNZuXIlVapU4ZFHHmH37t1hRxORbJZtBeLujdw98QDTawd52CagQrr75YOxjMYlBzAzrr/+eqLRKI0bN6ZHjx7UrVuXlJSUsKOJSDbKaaewpgPtzKywmZ0BnA0sBZYBZ5vZGWZWiNgL7dNDzCkHUK5cOV599VUmTZrEZ599Rs2aNbnvvvvYuXNn2NFEJBuE9Tbef5jZF0Bd4A0zmwXg7mnAZCAKvAXc7O573H030B2YBawFJgfLSg5jZrRt25a1a9fSrl07HnjgAWrUqMHixYvDjiYiR5nl5vfxJyUleXJyctgx8rSZM2fyr3/9i02bNnH77bczYMAAihUrFnYsETkIM1vu7kmHWi6nncKSXOayyy4jLS2NG2+8kUcffZTKlSszZ86csGOJyFGgApFsV6JECZ544gnee+89ChQoQKNGjbj++uv5/vvvw44mIkdABSLHzIUXXsjq1avp1asX48ePJxKJ8NprB3tTnojkZCoQOaaOO+44Bg8ezJIlSzj55JNp0aIFV111FV9//XXY0UTkMKlAJBT7/mzuwIEDefXVV4lEIjz//PO6OKNIHFGBSGgKFixI3759WbVqFX/729/o2LEjl19+OZ9//nnY0UQkE1QgErpKlSoxf/58HnvsMd577z0SEhJ44okndHFGkRxOBSI5Qv78+bn11ltJTU2lbt263HzzzVx00UV8+OGHYUcTkQyoQCRHOeOMM5g1axbPPvssa9asoUqVKvznP//RxRlFciAViOQ4Zkbnzp2JRqNcdtll9O7dmzp16rB69eqwo4lIOioQybFOPfVUXnnlFV5++WU2bdpEUlIS99xzDzt27Ag7moigApE40KpVK6LRKB06dODBBx+kevXqLFq0KOxYInmeCkTiwoknnsj48eN56623+OWXX6hXrx633norP/30U9jRRPIsFYjElSZNmpCamsrNN9/MyJEjSUxM5O233w47lkiepAKRuHP88cczYsQI5s2bR5EiRWjSpAnXXnst27ZtCzuaSJ6iApG4Va9ePVatWkWfPn14/vnniUQivPLKK2HHEskzVCAS14oUKcKgQYNYtmwZZcuWpVWrVrRu3Zqvvvoq7GgiuZ4KRHKF6tWrs3TpUgYNGsTrr79OJBJh/PjxujijSDZSgUiuUbBgQfr06cOqVauIRCJce+21NG3alE8//TTsaCK5kgpE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ICISgoSEBBYuXMijjz7K3LlzSUhIYPTo0ezduzfsaJKHHLRA3P14dy9xgOl4dy9wrEKKyJ/lz5+f22+/nTVr1lC7dm26detGw4YNWb9el6mTY+NITmGJSA5w5plnMnv2bMaNG8eqVauoUqUKDz/8MLt37w47muRyKhCRXMDMuO6664hGozRp0oSePXtSt25dUlJSwo4muZgKRCQXOe2005g2bRqTJ0/m888/p2bNmtx7773s3Lkz7GiSC6lARHIZM6NNmzZEo1Hat2/PgAEDqFGjBosXLw47muQyKhCRXKp06dI899xzzJw5k+3bt3P++edzxx138PPPP4cdTXIJFYhILnfppZeSmppKt27dGD58OImJibzzzjthx5JcQAUikgeUKFGCUaNGMW/ePAoWLMjf//53unTpwvfffx92NIljKhCRPKR+/fqsXr2a3r17M2HCBCKRCK+++mrYsSROqUBE8pjjjjuOhx56iCVLlnDyySfzj3/8g7Zt2/L111+HHU3ijApEJI+qWbMmy5Yt48EHH+S1114jEonw/PPP6+KMkmkqEJE8rGDBgtx9992sWrWKc889l44dO3LZZZfx+eefhx1N4oAKRESoVKkS8+fP5/HHH2f+/PkkJCQwatQoXZxRDkoFIiIA5MuXj1tuuYXU1FTq1q1L9+7dadCgAevWrQs7muRQKhAR+R+nn346s2bN4tlnnyU1NZWqVasyePBgXZxR/kQFIiJ/YmZ07tyZtWvXcvnll9OnTx/q1KnDqlWrwo4mOYgKREQyVLZsWaZOncrLL7/Mpk2bSEpKom/fvuzYsSPsaJIDqEBE5JBatWpFNBrln//8J4MGDaJatWosXLgw7FgSMhWIiGTKiSeeyLPPPsusWbPYsWMH9evX59Zbb+Wnn34KO5qERAUiIoelcePGpKam0r17d0aOHEliYiJvv/122LEkBCoQETlsxYsX//0zI0WKFKFJkyZce+21fPfdd2FHk2NIBSIiWXbBBRewatUq7r77bp5//nkikQhTp04NO5YcI6EUiJkNMLMUM1tlZm+b2WnBuJnZ42a2IZhfI91jOpnZ+mDqFEZuEfmzIkWK8OCDD5KcnMxpp51G69atad26NV999VXY0SSbhXUE8rC7V3H3asDrwL3B+KXA2cHUFXgSwMxOBO4D6gC1gfvMrNQxTy0iGapWrRpLlixh8ODBvP7661SqVInx48fr4oy5WCgF4u4/prtbDNj3HdYceM5jFgMlzexUoAkw292/c/dtwGyg6TENLSKHVLBgQXr16sXq1atJTEzk2muvpUmTJnz66adhR5NsENprIGb2oJltBDrwxxFIOWBjusW+CMYyGj/Q83Y1s2QzS96yZcvRDy4ih/S3v/2N9957j1GjRvH++++TmJjIiBEjdHHGXCbbCsTM3jGz1ANMzQHcva+7VwAmAt2P1nrdfYy7J7l7UpkyZY7W04rIYcqXLx833XQTqampv39mpH79+qxduzbsaHKUZFuBuHsjd088wPTafotOBFoFtzcBFdLNKx+MZTQuIjlcxYoVmTlzJs899xwffPAB1apVY9CgQfz2229hR5MjFNa7sM5Od7c58EFwezrQMXg31nnAD+6+GZgFNDazUsGL542DMRGJA2bGP//5T6LRKC1atKBv377UqlWLFStWhB1NjkBYr4EMDk5npRArg9uC8ZnAx8AGYCxwE4C7fwcMAJYF0wPBmIjEkVNOOYVJkyYxbdo0vv76a2rXrk3v3r359ddfw44mWWC5+S12SUlJnpycHHYMETmAbdu20aNHD8aNG8c555zD008/Tf369cOOJYCZLXf3pEMtp0+ii0goSpUqxdNPP83s2bPZtWsXF154ITfffDPbt28PO5pkkgpERELVqFEjUlNTuf3223nyySdJSEjgzTffDDuWZIIKRERCV6xYMR599FEWLlxI8eLFueyyy+jYsSNbt24NO5ochApERHKMunXrsnLlSvr168eLL75IpUqVmDx5si6HkkOpQEQkRylcuDAPPPAAy5cv5y9/+QtXXXUVLVu25Msvvww7muxHBSIiOVKVKlVYvHgxQ4YM4a233iISiTBu3DgdjeQgKhARybEKFChAjx49SElJoWrVqlx//fX8/e9/5+OPPw47mqACEZE4cPbZZzN37lyefPJJli5dSuXKlRk+fDh79uwJO1qepgIRkbiQL18+brzxRtLS0rj44ou54447qFevHtFoNOxoeZYKRETiSoUKFZgxYwYTJ05k/fr1VKtWjQEDBrBr166wo+U5KhARiTtmxtVXX83atWtp1aoV9957L0lJSSxbtizsaHmKCkRE4laZMmV48cUXee2119i6dSvnnXcePXv25Jdffgk7Wp6gAhGRuNesWTOi0ShdunTh4YcfpmrVqrz33nthx8r1VCAikiuccMIJjBkzhjlz5rB3714uuugiunXrxo8//hh2tFxLBSIiuUrDhg1Zs2YNd955J2PGjCEhIYE33ngj7Fi5kgpERHKdokWL8sgjj/D+++9TsmRJrrjiCjp06MCWLVvCjparqEBEJNeqXbs2y5cvp3///kyZMoVIJMJLL72ky6EcJSoQEcnVChUqxH333ceKFSs488wzad++Pc2bN2fTpk1hR4t7KhARyRMSExNZtGgRQ4cO5Z133iESiTB27FgdjRwBFYiI5Bn58+fn3//+N2vWrKFmzZp07dqVSy5TlEKUAAANF0lEQVS5hI8++ijsaHFJBSIiec5f//pX5syZw9ixY1m+fDmVK1dm6NChujjjYVKBiEieZGZcf/31RKNRGjVqxF133UXdunVJTU0NO1rcUIGISJ5Wrlw5XnvtNV566SU+/fRTatSoQf/+/XVxxkxQgYhInmdmXHXVVUSjUdq2bcv9999PjRo1WLp0adjRcjQViIhI4KSTTuL//u//eP311/nhhx+oW7cud955py7OmAEViIjIfi6//HLS0tLo2rUrw4YNo3Llyrz77rthx8pxVCAiIgdQokQJnnzySf773/+SL18+LrnkEm644Qa+//77sKPlGCoQEZGDaNCgASkpKfTs2ZNnnnmGhIQEpk+fHnasHEEFIiJyCMcddxz/+c9/WLJkCaVLl6Z58+a0a9eOb775JuxooVKBiIhkUlJSEsnJyQwYMIBp06YRiUSYOHFinr0cigpEROQwFCpUiHvuuYeVK1dy9tlnc80113DllVeycePGsKMdcyoQEZEsiEQiLFiwgOHDhzN37lwSEhIYPXo0e/fuDTvaMaMCERHJovz583PbbbeRmppKnTp16NatGxdffDHr168PO9oxoQIRETlCZ5xxBm+//Tbjxo1j9erVVKlShSFDhrB79+6wo2UrFYiIyFFgZlx33XVEo1GaNm1Kr169OO+881i9enXY0bJNqAViZneamZvZScF9M7PHzWyDmaWYWY10y3Yys/XB1Cm81CIiGTvttNN45ZVXmDx5Mhs3biQpKYl+/fqxc+fOsKMddaEViJlVABoDn6cbvhQ4O5i6Ak8Gy54I3AfUAWoD95lZqWMaWEQkk8yMNm3aEI1Gufrqqxk4cCDVq1fn/fffDzvaURXmEcijQE8g/RuomwPPecxioKSZnQo0AWa7+3fuvg2YDTQ95olFRA5D6dKlmTBhAm+++SY///wzF1xwAbfffjs//fRT2NGOilAKxMyaA5vcff+Tg+WA9G+m/iIYy2j8QM/d1cySzSx5y5YtRzG1iEjWNG3alNTUVG666SYee+wxKleuzOzZs8OOdcSyrUDM7B0zSz3A1By4G7g3O9br7mPcPcndk8qUKZMdqxAROWzHH388I0eOZN68eRQqVIjGjRvTpUsXtm3bFna0LMu2AnH3Ru6euP8EfAycAaw2s0+B8sAKMysLbAIqpHua8sFYRuMiInGlfv36rF69mt69ezNhwgQikQjTpk0LO1aWHPNTWO6+xt1PdvfT3f10Yqejarj7V8B0oGPwbqzzgB/cfTMwC2hsZqWCF88bB2MiInGnSJEiPPTQQyxdupSyZcvSsmVL2rZty9dffx12tMOS0z4HMpPYEcoGYCxwE4C7fwcMAJYF0wPBmIhI3Nr3Z3MHDRrE9OnTqVSpEs8991zcXJzR4iVoViQlJXlycnLYMUREDumDDz6gS5cuLFq0iCZNmvDUU09RsWLFULKY2XJ3TzrUcjntCEREJE8699xzmT9/PiNGjGDBggUkJiYyatSoHH1xRhWIiEgOkS9fPrp3705qairnn38+3bt3p0GDBqxbty7saAekAhERyWFOP/103nrrLcaPH09aWhpVq1Zl8ODB/Pbbb2FH+x8qEBGRHMjM6NSpE9FolCuvvJI+ffpQp04dVq5cGXa036lARERysLJlyzJlyhSmTp3Kl19+Sa1atejbty87duwIO5oKREQkHrRs2ZK1a9fSsWNHBg0aRLVq1Vi4cGGomVQgIiJxolSpUjzzzDPMmjWLHTt2UL9+fW655Ra2b98eSh4ViIhInGncuDGpqanccsstjBo1isTERGbNOvYX51CBiIjEoeLFi/PYY48xf/58ihYtStOmTencuTPffXfsLtKhAhERiWMXXHABK1eupG/fvkycOJFIJMLUqVOPybpVICIica5IkSIMHDiQZcuWUa5cOVq3bk3btm2z/VPsBbL12UVE5JipVq0aS5YsYdiwYfz444/ky5e9xwgqEBGRXKRAgQL07NnzmKxLp7BERCRLVCAiIpIlKhAREckSFYiIiGSJCkRERLJEBSIiIlmiAhERkSxRgYiISJaYu4edIduY2Rbg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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Plot points and grid\n",
    "plt.contourf(xx, yy, grid_predictions, cmap=plt.cm.Paired, alpha=0.8)\n",
    "plt.plot(class1_x, class1_y, 'ro', label='I. setosa')\n",
    "plt.plot(class2_x, class2_y, 'kx', label='Non setosa')\n",
    "plt.title('Gaussian SVM Results on Iris Data')\n",
    "plt.xlabel('Pedal Length')\n",
    "plt.ylabel('Sepal Width')\n",
    "plt.legend(loc='lower right')\n",
    "plt.ylim([-0.5, 3.0])\n",
    "plt.xlim([3.5, 8.5])\n",
    "plt.show()\n",
    "\n",
    "# Plot batch accuracy\n",
    "plt.plot(batch_accuracy, 'k-', label='Accuracy')\n",
    "plt.title('Batch Accuracy')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n",
    "\n",
    "# Plot loss over time\n",
    "plt.plot(loss_vec, 'k-')\n",
    "plt.title('Loss per Generation')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate Test Points\n",
    "\n",
    "We create a set of test points, and evaluate the class predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_test_seq = np.array([4., 5., 6., 7.])\n",
    "y_test_seq = np.array([0., 1., 2.])\n",
    "\n",
    "x_test, y_test = np.meshgrid(x_test_seq,y_test_seq)\n",
    "test_points = np.c_[x_test.ravel(), y_test.ravel()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4., 0.],\n",
       "       [5., 0.],\n",
       "       [6., 0.],\n",
       "       [7., 0.],\n",
       "       [4., 1.],\n",
       "       [5., 1.],\n",
       "       [6., 1.],\n",
       "       [7., 1.],\n",
       "       [4., 2.],\n",
       "       [5., 2.],\n",
       "       [6., 2.],\n",
       "       [7., 2.]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_points"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can evaluate the predictions on our test points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4., 0.],\n",
       "       [5., 0.],\n",
       "       [6., 0.],\n",
       "       [7., 0.],\n",
       "       [4., 1.],\n",
       "       [5., 1.],\n",
       "       [6., 1.],\n",
       "       [7., 1.],\n",
       "       [4., 2.],\n",
       "       [5., 2.],\n",
       "       [6., 2.],\n",
       "       [7., 2.]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "[test_predictions] = sess.run(prediction, feed_dict={x_data: x_vals,\n",
    "                                                     y_target: np.transpose([y_vals]),\n",
    "                                                     prediction_grid: test_points})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  1.,  1.,  1.,  1., -1., -1.,  1.,  1.,  1., -1., -1.],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions.ravel()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Format the test points together with the predictions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Point [4. 0.] is predicted to be in class 1.0\n",
      "Point [5. 0.] is predicted to be in class 1.0\n",
      "Point [6. 0.] is predicted to be in class 1.0\n",
      "Point [7. 0.] is predicted to be in class 1.0\n",
      "Point [4. 1.] is predicted to be in class 1.0\n",
      "Point [5. 1.] is predicted to be in class -1.0\n",
      "Point [6. 1.] is predicted to be in class -1.0\n",
      "Point [7. 1.] is predicted to be in class 1.0\n",
      "Point [4. 2.] is predicted to be in class 1.0\n",
      "Point [5. 2.] is predicted to be in class 1.0\n",
      "Point [6. 2.] is predicted to be in class -1.0\n",
      "Point [7. 2.] is predicted to be in class -1.0\n"
     ]
    }
   ],
   "source": [
    "for ix, point in enumerate(test_points):\n",
    "    point_pred = test_predictions.ravel()[ix]\n",
    "    print('Point {} is predicted to be in class {}'.format(point, point_pred))"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
